perm filename ROMANP.MF[CM,DEK]1 blob sn#788872 filedate 1985-04-13 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00006 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	% This file contains `\$' and `\&' and `?' in the so-called roman style.
C00003 00003	cmchar "Dollar sign"
C00006 00004	cmchar "Ampersand"
C00010 00005	cmchar "Question mark"
C00012 00006	iff known spanish_query: cmchar "Spanish open question mark"
C00014 ENDMK
CāŠ—;
% This file contains `\$' and `\&' and `?' in the so-called roman style.

% Codes \0044, \0046, and \0077 are generated, as well as code |spanish_query|
% (for a Spanish question mark) if that code value is known.
cmchar "Dollar sign";
beginchar("$",9u#,body_height#,body_height#-asc_height#);
italcorr fig_height#*slant-.5u#; % same as for digits
adjust_fit(0,0);
numeric theta; theta=90-angle(50u,asc_height);	% angle at middle
pickup fine.nib; penpos2(vair-fine,-90);
penpos4(cap_stem-fine,theta); penpos5(cap_stem-fine,theta);
penpos7(vair-fine,-90);
x2+x7=x4+x5=w; x7=x2; x5-x4=1.5u; top y2l=asc_height+oo; bot y7r=-oo;
.5[y4,y5]=.52asc_height; z5-z4=whatever*dir(theta-90);
lft x3l=round u; rt x6r=round(w-u);
y3l=.52[.5[y4l,y5l],y2l]; y6r=.52[.5[y4r,y5r],y7r];
z3r=parallel_pos(.5[slab,cap_ess]-fine,z3l,z2l,z2r);
z6l=parallel_pos(.5[slab,cap_ess]-fine,z6r,z7r,z7l);
numeric tau; tau=max(.8,.20710678/(superness-.5));
filldraw stroke z2e{left}..tension atleast tau..z3e{down}
 ..tension atleast tau and atleast 1..z4e---z5e
 ..tension atleast 1 and atleast tau..z6e{down}
 ..tension atleast tau..z7e{left};	% main stroke
if serifs: penpos1(hair-fine,0); penpos8(hair-fine,180);
 penpos0(flare-fine,0); penpos9(flare-fine,180);
 rt x1r=round(w-u); lft x8r=round u; y1=.5[.5[y4,y5],y2]; y8=.5[.5[y4,y5],y7];
 penpos2'(vair-fine,90); z2'=z2; bulb(2',1,0);	% upper arc and bulb
 bulb(7,8,9);	% lower arc and bulb
else: penpos1(.3[vair,flare]-fine,-90); penpos8(.5[vair,flare]-fine,-90);
 rt x1=round(w-1.5u); lft x8=round u;
 top y1l=round .93asc_height+oo; bot y8r=round .1asc_height-oo;
 filldraw stroke z1e..tension.9..{left}z2e;	% upper arc and terminal
 filldraw stroke z7e{left}..z8e; fi	% lower arc and terminal
pickup crisp.nib; penpos10(bar-crisp,0); penpos11(bar-crisp,0);
lft x10l=lft x11l=round(.5w-.5bar); top y10=h; bot y11=-d;
filldraw stroke z10e..z11e;	% vertical crossbar
penlabels(0,1,,2,3,4,5,6,7,8,9); endchar;
cmchar "Ampersand";
beginchar("&",14u#,asc_height#,0);
italcorr x_height#*slant-serif_fit# - if serifs: .4u# else: 1.5u# fi;
adjust_fit(0,serif_fit#);
pickup tiny.nib; penpos2(slab-tiny,-90); x2=4u; bot y2r=-o;
if not hefty:(x,y2l)=whatever[z2r,(w-5u,x_height)]; x2l:=x; fi
if serifs: penpos0(fudged.hair-tiny,0);
 rt x0r+jut=round(w-.9u); top y0=x_height;
 penpos1(fudged.hair-tiny,0); z1=whatever[z0,(.6[x0,x2],0)];
 y1=max(y0-1.5bracket-.2x_height,2/3x_height);
 filldraw stroke z0e---z1e...{left}z2e;	% short diagonal
else: pickup fine.nib; penpos1(.25[slab,flare]-fine,-15); rt x1r=round(w-2u);
 y1r=good.y(.75[bar_height,x_height]); x1l:=good.x x1l; y1l:=good.y y1l;
 top z2'l=(x2l,tiny.top y2l); bot z2'r=(x2r,tiny.bot y2r);
 filldraw stroke z1e...{left}z2'e; fi	% short diagonal and terminal
numeric slope,theta,reduced_hair; pickup tiny.nib;
slope=(h-2vair-slab)/10.5u; theta=angle(-slope,1);
reduced_hair=max(tiny.breadth,round(fudged.hair if hefty:-2stem_corr fi));
lft x3r=round .75u; x5=.5[x3r,x6l]; lft x6r=round .5(w-u);
x3l-x3r=curve-tiny; penpos6(reduced_hair-tiny,180);
penpos5(vair-tiny,theta); y5=.5h;
ellipse_set(2l,3l,4l,5l); ellipse_set(2r,3r,4r,5r);
penpos7(vair-tiny,270); top y7l=h+o; x7=.45[x6r,x8r];
penpos8(fudged.stem-tiny,30); x8l=round(x8l+4u-x8); y8r=y6;
ellipse_set(7l,6l,5',5l);
filldraw stroke z2e{left}...z3e{up}...z4e---z5e...{up}z6e
 ...z7e{left}...z8e{down};	% bowls
penpos10(slab-tiny,90); x10=w-3.5u; bot y10l=-o;
penpos9(fudged.stem-tiny,angle(z8-z10)-90);
z9=.5[z8,z10]+(1.75u,0) rotated(angle(z8-z10)+90);
filldraw stroke z8e{down}...z9e{z10-z8}...{right}z10e;	% long diagonal
if serifs: pickup crisp.nib; penpos10'(slab-crisp,90); z10'=z10;
 penpos11(fudged.hair-crisp,180); rt x11l=round(w-u); y11=.5bar_height;
 filldraw stroke z10'e{right}...{up}z11e;	% terminal
 numeric inner_jut; if rt x6l+.5u<lft x0l-1.5jut: inner_jut=1.5jut;
 else: rt x6l+.5u=lft x0l-inner_jut; fi
 cup_serif(0,1,a,.6,inner_jut,b,.5,jut)(dark);	% serif
else: pickup fine.nib; penpos10'(slab-fine,90); z10'=z10;
 penpos11(round(.5[slab,flare])-fine,90);
 rt x11=round(r-letter_fit-u); bot y11l=round .07bar_height-o;
 filldraw stroke z10'e{right}..z11e; fi	% terminal
penlabels(0,1,2,3,4,5,6,7,8,9,10,11); endchar;
cmchar "Question mark";
beginchar("?",8.5u#,asc_height#,0);
italcorr .8asc_height#*slant;
adjust_fit(0,0);
pickup tiny.nib; penpos7(dot_size-tiny,0); penpos8(dot_size-tiny,90);
lft x7l=round(.5w-.25u-.5dot_size); bot y8l=0; z7=z8; dot(7,8);	% dot
numeric bot_width;
bot_width=if hefty:max(round .8dot_size,fine.breadth) else: hair fi;
pickup fine.nib; penpos2(vair-fine,90); penpos3(curve-fine,0);
penpos4(vair-fine,-90); penpos5(bot_width-fine,0); penpos6(bot_width-fine,0);
x2=x4=x5=x6=x7; rt x3r=round(w-u); bot y6=1+.25[top y8r,x_height];
top y2r=h+oo; y3=.75[y6,y2]; y4=.5[y6,y2]; y5=.1[y6,y2];
{{interim superness:=more_super;
filldraw stroke pulled_super_arc.e(2,3)(superpull)
 & subpath (0,1) of super_arc.e(3,4) .. z5e---z6e}};	% arc and stem
if serifs: penpos1(hair-fine,180); penpos0(flare-fine,180);
 lft x1r=round u; y1=y3; bulb(2,1,0);	% bulb
else: penpos1(round(5/7[vair,flare])-fine,90);
 lft x1=round u; top y1r=round(.93[y6,top y2r]);
 filldraw stroke z1e..{right}z2e; fi	% terminal
penlabels(0,1,2,3,4,5,6,7,8); endchar;
iff known spanish_query: cmchar "Spanish open question mark";
beginchar(spanish_query,8.5u#,asc_height#-desc_depth#,desc_depth#);
adjust_fit(0,0);
pickup tiny.nib; penpos7(dot_size-tiny,0); penpos8(dot_size-tiny,90);
lft x7l=round(.5w-.25u-.5dot_size); top y8r=h; z7=z8; dot(7,8);	% dot
numeric top_width;
top_width=if hefty:max(round .8dot_size,fine.breadth) else: hair fi;
pickup fine.nib; penpos2(vair-fine,270); penpos3(curve-fine,180);
penpos4(vair-fine,90); penpos5(top_width-fine,180); penpos6(top_width-fine,180);
x2=x4=x5=x6=x7; lft x3r=round u; top y6=.25[bot y8r,h-x_height];
bot y2r=-d-oo; y3=.75[y6,y2]; y4=.5[y6,y2]; y5=.1[y6,y2];
{{interim superness:=more_super;
filldraw stroke pulled_super_arc.e(2,3)(superpull)
 & subpath (0,1) of super_arc.e(3,4) .. z5e---z6e}};	% arc and stem
if serifs: penpos1(hair-fine,0); penpos0(flare-fine,0);
 rt x1r=round(w-u); y1=y3; bulb(2,1,0);	% bulb
else: penpos1(round(5/7[vair,flare])-fine,90);
 rt x1=round(w-u); bot y1r=round(.95[y6,bot y2r]);
 filldraw stroke z1e..{left}z2e; fi	% terminal
penlabels(0,1,2,3,4,5,6,7,8); endchar;